package done.easy_201_300;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

/**
 * 225. Implement Stack using Queues
 * 用队列实现栈
 * <p>
 * 使用队列实现栈的下列操作：
 * push(x) -- 元素 x 入栈
 * pop()   -- 移除栈顶元素
 * top()   -- 获取栈顶元素
 * empty() -- 返回栈是否为空
 * 注意:
 * 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。
 * 你所使用的语言也许不支持队列。 你可以使用 list 或者 deque（双端队列）来模拟一个队列 , 只要是标准的队列操作即可。
 * 你可以假设所有操作都是有效的（例如, 对一个空的栈不会调用 pop 或者 top 操作）。
 *
 * @author 大硕
 * 2019-03-29 9:35 PM
 **/
@Slf4j
@SuppressWarnings("all")
public class ImplementStackUsingQueues {

    public ImplementStackUsingQueues() {

    }

    public void push(int x) {

    }

    public int pop() {
        return -1;
    }

    public int top() {
        return -1;
    }

    public boolean empty() {
        return false;
    }

    @Test
    public void test() {
        ImplementStackUsingQueues stack = new ImplementStackUsingQueues();
        stack.push(1);
        log.info("pop:{}", stack.pop());
        log.info("empty:{}", stack.empty());
        stack.push(4);
        stack.push(5);
        stack.push(6);
        log.info("top:{}", stack.top());
    }
}































/*
private Queue<Integer> queue;
private int size;

public ImplementStackUsingQueues() {
    //LinkedList也是Queue的实现类
    this.queue = new LinkedList<>();
    this.size = 0;
}

public void push(int x) {
    queue.offer(x);
    for(int i = 0; i < size; i++){
        queue.offer(queue.poll());
    }
    size++;
}

public int pop() {
    size--;
    return queue.poll();
}

public int top() {
    return queue.peek();
}

public boolean empty() {
    return size == 0;
}
*/
